$(function () {

  var currentPage = 1; // 记录当前页 
  var pageSize = 3; // 每页数据条数

  // 1- 首页渲染功能
  // 1- ajax 去后台 获取一级分类的数据
  // 2- 通过模板引擎把数据渲染到页面中 
  function render () {
    $.ajax({
      type: 'get',
      url: '/category/queryTopCategoryPaging',
      data: {
        page: currentPage,
        pageSize: pageSize,
      },
      dataType: 'json',
      success: function (res) {
        console.log(res);
        // 渲染 
        $('tbody').html(template('tmp', res));
        // 基于数据库真实的数据总数 来生成分页 
        setPage(res.total);
      }
    })
  }

  render();

  // 2- 分页功能 
  // 注意点： 分页按钮的个数， 由后台数据库数据的总数决定！  
  // 1- 获取数据库数据的总数， 根据总数推算出页码， 
  // 2- 根据算出的页面 生成分页的按钮 
  // 3- 点击不同的分页按钮，切换到不同的页面   

  // total 数据库的数据总数 
  function setPage (total) {
    $("#paginator").bootstrapPaginator({
      bootstrapMajorVersion: 3,//默认是2，如果是bootstrap3版本，这个参数必填
      currentPage: currentPage,// 高亮的分页按钮  
      totalPages: Math.ceil(total / pageSize),//分页按钮的个数  
      onPageClicked: function (event, originalEvent, type, page) {
        //为按钮绑定点击事件 page:当前点击的页面序号 
        console.log('page:', page);
        // 1- 改变当前页取值 
        currentPage = page;
        // 2- 页面重新渲染
        render();
      }
    });
  }

  // 3- 添加分类表单进行非空校验
  //使用表单校验插件
  $('.add-form').bootstrapValidator({
    //1. 指定不校验的类型，默认为[':disabled', ':hidden', ':not(:visible)'],可以不设置
    excluded: [':disabled', ':hidden', ':not(:visible)'],

    //2. 指定校验时的图标显示，默认是bootstrap风格
    feedbackIcons: {
      valid: 'glyphicon glyphicon-ok',
      invalid: 'glyphicon glyphicon-remove',
      validating: 'glyphicon glyphicon-refresh'
    },

    //3. 指定校验字段
    fields: {
      //校验用户名，对应name表单的name属性
      categoryName: {
        validators: {
          //不能为空
          notEmpty: {
            message: '请输入一级分类名称！！'
          }
        }
      },
    }
  });

  // 4- 添加功能 
  // 1- 点击添加按钮，在表单数据校验通过的情况下，向后台发送ajax请求，把数据添加到数据库 
  // 2- 添加完成后，页面重新渲染， 隐藏模态框，表单重置 
  // success.form.bv事件： 在点击提交按钮，并且数据合理情况下触发
  $('.add-form').on('success.form.bv', function (e) {
    // 阻止submit 的表单提交行为
    e.preventDefault();
    // 向后台发送ajax请求，把数据添加到数据库 
    $.ajax({
      type: 'post',
      url: '/category/addTopCategory',
      data: $('.add-form').serialize(),
      dataType: 'json',
      success: function (res) {
        console.log(res);
        // 页面重新渲染
        render();
        // 隐藏模态框
        $('.modal-add').modal('hide');
        // 表单重置  重置表单的数据 和 校验样式 
        // 重置表单的数据
        // $('.add-form')[0].reset();
        // 重置表单校验样式  resetForm()  ，  通过插件的实例去调用
        // resetForm(是否重置数据[默认值是false])
        // 重置表单的数据和样式 
        $('.add-form').data('bootstrapValidator').resetForm(true);
      }
    })

  })


});
